import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
import time

my_sender = '908516511@qq.com'  # 发件人邮箱账号
my_pass = 'qtedtjddudjcbedb'  # 发件人邮箱密码(当时申请smtp给的口令)
my_user = '1838722604@qq.com'  # 收件人邮箱账号，我这边发送给自己


import poplib
from email.parser import Parser
import base64

def get_parsed_msg():
    # 邮箱个人信息
    useraccount = '908516511@qq.com'
    password = 'uadlbosxgabrbdeh'
    # 邮件服务器地址
    pop3_server = 'pop.qq.com'
    # 开始连接到服务器
    server = poplib.POP3(pop3_server)
    # 可选项： 打开或者关闭调试信息，1为打开，会在控制台打印客户端与服务器的交互信息
    server.set_debuglevel(1)
    # 可选项： 打印POP3服务器的欢迎文字，验证是否正确连接到了邮件服务器
    print(server.getwelcome().decode('utf8'))
    # 开始进行身份验证
    server.user(useraccount)
    server.pass_(password)
    # 使用list()返回所有邮件的编号，默认为字节类型的串
    resp, mails, octets = server.list()
    print('邮件总数： {}'.format(len(mails)))
    # 下面单纯获取最新的一封邮件
    total_mail_numbers = len(mails)
    # 默认下标越大，邮件越新，所以total_mail_numbers代表最新的那封邮件
    response_status, mail_message_lines, octets = server.retr(total_mail_numbers)
    print('邮件获取状态： {}'.format(response_status))
    print('原始邮件数据:\n{}'.format(mail_message_lines))
    print('该封邮件所占字节大小: {}'.format(octets))
    msg_content = b'\r\n'.join(mail_message_lines).decode('gbk')
    # 邮件原始数据没法正常浏览，因此需要相应的进行解码操作
    msg = Parser().parsestr(text=msg_content)
    print('解码后的邮件信息:\n{}'.format(msg))
    # 关闭与服务器的连接，释放资源
    server.close()
    return msg



def mail(email_content):
    ret = True
    today_time=time.time()
    try:
        msg = MIMEText(str(email_content), 'plain', 'utf-8')
        msg['From'] = formataddr(["eric", my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To'] = formataddr(["收件人昵称", my_user])  # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg['Subject'] = "stock up to Ten"  # 邮件的主题，也可以说是标题

        server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器，端口是465
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender, [my_user, ], msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
    except Exception:  # 如果 try 中的语句没有执行，则会执行下面的 ret=False
        ret = False
    return ret

if __name__ == '__main__':
    mail("收件人")
#get_parsed_msg()
